home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / keytype / keytype.bas next >
BASIC Source File  |  1993-07-08  |  7KB  |  146 lines

  1. 10 '*********************************************************
  2. 20 ' JISキーボード速打ち練習   V0.5 L3
  3. 30 '             1991.10. 7~1993. 2.10  (C) おこめ
  4. 40 '*********************************************************
  5. 50 'データは最後にあるよ
  6. 60 '辞全R英小     辞全R英大     辞全Rかな     辞全Rカナ
  7. 70 '辞全 英小     辞全 英大     辞全 かな     辞全 カナ
  8. 80 '辞  R英小     辞  R英大     辞  Rかな     辞  Rカナ
  9. 90 '辞   英小     辞   英大     辞   かな     辞   カナ
  10. 100 '  全R英小       全R英大       全Rかな       全Rカナ V2.1
  11. 110 '  全 英小       全 英大       全 かな       全 カナ V2.1
  12. 120 '    R英小         R英大         Rかな         Rカナ
  13. 130 '     英小          英大          かな          カナ
  14. 140 CLEAR ,,512,100000,0:DEFINT A-Z
  15. 150 COLOR 7,0,7,4:WIDTH 80,25:CONSOLE 14,10,2
  16. 160 SCREEN@2:CLS:SP=10
  17. 170 DIM X(262),Y(262),X2(262),Y2(262),M(1000),M2(1000),HK(255),KH$(255)
  18. 180 DIM TY(100),MD$(10)
  19. 190 PALETTE 1,[127,127,127],1
  20. 200 PALETTE 2,[0,0,255],1
  21. 210 LINE(0,0)-(639,260),PSET,%2,BF
  22. 220 FOR I=3 TO 255
  23. 230 PALETTE I,[I,255,I]:NEXT
  24. 240 READ A$:IF A$<>"" THEN KH$(ASC(A$))=MID$(A$,2):HK(ASC(MID$(A$,3)))=ASC(A$):GOTO 240
  25. 250 FOR M=0 TO 1
  26. 260 FOR J=0 TO 3:READ A,K
  27. 270 IF M THEN 290
  28. 280 LINE(50,70+J*32)-(530,102+J*32),PSET,0,BF,%1
  29. 290 FOR I=0 TO A
  30. 300 IF M THEN 320
  31. 310 LINE(I*32+K,70+J*32)-STEP(32,32),PSET,0,BF,7
  32. 320 READ L
  33. 330 X(L)=I*32+K:Y(L)=70+J*32:X2(L)=32:Y2(L)=32
  34. 340 IF M THEN 360
  35. 350 SYMBOL(X(L)+M*16+2,Y(L)+M*8+9),AKCNV$(CHR$(L)),1,1,0:GOTO 370
  36. 360 SYMBOL(X(L)+M*16+2,Y(L)+M*8+9),KH$(L),1,1,0
  37. 370 NEXT I,J,M
  38. 380 FOR I=0 TO 9
  39. 390 READ MD$(I)
  40. 400 NEXT
  41. 410 LINE(50,198)-(530,230),PSET,0,BF,%1
  42. 420 X(32)=194:Y(32)=198:X2(32)=160:Y2(32)=32
  43. 430 X(13)=490:Y(13)=102:X2(13)=40:Y2(13)=64
  44. 440 X(257)=146:Y(257)=198:X2(257)=48:Y2(257)=32 'CAP
  45. 450 X(258)=50:Y(258)=198:X2(258)=48:Y2(258)=32 'ひらがな
  46. 460 X(259)=410:Y(259)=198:X2(259)=72:Y2(259)=32 'カタカナ
  47. 470 X(260)=545:Y(260)=75:X2(260)=32:Y2(260)=32 '半角/全角
  48. 480 X(261)=354:Y(261)=198:X2(261)=56:Y2(261)=32 'かな漢字
  49. 490 X(262)=50:Y(262)=134:X2(262)=56:Y2(262)=32 'CTRL
  50. 500 DATA ヌぬ,フふ,アあ,ウう,エえ,オお,ヤや,ユゆ,ヨよ,ワわ,ホほ,ヘへ,ーー
  51. 510 DATA タた,テて,イい,スす,カか,ンん,ナな,ニに,ラら,セせ,゙゛,゚゜
  52. 520 DATA チち,トと,シし,ハは,キき,クく,マま,ノの,リり,レれ,ケけ,ムむ
  53. 530 DATA ツつ,サさ,ソそ,ヒひ,コこ,ミみ,モも,ネね,ルる,メめ,ロろ
  54. 540 DATA ァぁ,ゥぅ,ェぇ,ォぉ,ャゃ,ュゅ,ョょ,ヲを
  55. 550 DATA ィぃ,「「,」」,ッっ,、、,。。,・・,""
  56. 560 DATA 12,82,49,50,51,52,53,54,55,56,57,48,45,94,92
  57. 570 DATA 11,98,81,87,69,82,84,89,85,73,79,80,64,91
  58. 580 DATA 11,106,65,83,68,70,71,72,74,75,76,59,58,93
  59. 590 DATA 10,122,90,88,67,86,66,78,77,44,46,47,34
  60. 600 DATA 12,82,199,204,177,179,180,181,212,213,214,220,206,205,176
  61. 610 DATA 11,98,192,195,178,189,182,221,197,198,215,190,222,223
  62. 620 DATA 11,106,193,196,188,202,183,184,207,201,216,218,185,209
  63. 630 DATA 10,122,194,187,191,203,186,208,211,200,217,210,219
  64. 640 DATA "  ","辞","  ","全"," ","R","英小","英大","カナ","かな"
  65. 650 LINE(X(32),Y(32))-STEP(X2(32),Y2(32)),PSET,0,B
  66. 660 LINE(X(13),Y(13))-STEP(X2(13),Y2(13)),PSET,0,BF,%1
  67. 670 LINE(X(257),Y(257))-STEP(X2(257),Y2(257)),PSET,0,BF,%1
  68. 680 LINE(98,198)-STEP(96,32),PSET,0,B
  69. 690 LINE(410,198)-STEP(72,32),PSET,0,B
  70. 700 LINE(210,150)-STEP(16,2),PASTEL,0,BF
  71. 710 LINE(306,150)-STEP(16,2),PASTEL,0,BF
  72. 720 SYMBOL(53,79),"ESC",1,1,0,,,1
  73. 730 SYMBOL(61,111),"TAB",1,1,0,,,1
  74. 740 SYMBOL(61,143),"CTRL",1,1,0,,,1
  75. 750 SYMBOL(65,175),"SHIFT",1,1,0,,,1
  76. 760 SYMBOL(507,79),"←",1,1,%1,,,8
  77. 770 SYMBOL(483,175),"SHIFT",1,1,0,,,1
  78. 780 SYMBOL(54,207),"ひらがな",.6!,1,0,,,1
  79. 790 SYMBOL(109,207),"ALT",1,1,0,,,1
  80. 800 SYMBOL(157,207),"CAP",1,1,0,,,1
  81. 810 SYMBOL(367,201),"かな",1,.9!,0,,,1
  82. 820 SYMBOL(367,215),"漢字",1,.9!,0,,,1
  83. 830 SYMBOL(415,207),"カタカナ",1,1,0,,,1
  84. 840 SYMBOL(491,207),"取消",1,1,0,,,1
  85. 850 READ A$:IF A$="" THEN SP=SP-1:RESTORE 850:IF SP=0 THEN END ELSE 850
  86. 860 LOCATE 10,CSRLIN:PRINT A$:LOCATE 10,CSRLIN
  87. 870 '文字コード判別
  88. 880 I=ASC(A$)
  89. 890 IF I<&H20 OR I=&H7F THEN 1000
  90. 900 IF I=&H20 THEN MD=8:MD2=0:GOTO *MODES
  91. 910 IF I>&H20 AND I<&H41 THEN MD=10:MD2=0:GOTO *MODES
  92. 920 IF I>&H40 AND I<&H5B THEN MD=11:MD2=1:GOTO *MODES
  93. 930 IF I>&H5A AND I<&H61 THEN MD=10:MD2=0:GOTO *MODES
  94. 940 IF I>&H60 AND I<&H7B THEN MD=11:MD2=0:GOTO *MODES
  95. 950 IF I>&H7A AND I<&H7F THEN MD=10:MD2=0:GOTO *MODES
  96. 960 IF I>&H7F AND I<&HA0 THEN MD=24:MD2=24:GOTO *MODES
  97. 970 IF I>&H9F AND I<&HE0 THEN MD=15:MD2=2:GOTO *MODES
  98. 980 IF I>&HDF            THEN MD=24:MD2=24:GOTO *MODES
  99. 990 *MODES IF (KAM AND MD)<>MD2 THEN GOSUB *KMODE
  100. 1000 IF I>&H60 AND I<&H7B THEN C$=CHR$(I-32) ELSE C$=A$
  101. 1010 LINE(X(ASC(C$)),Y(ASC(C$)))-STEP(X2(ASC(C$)),Y2(ASC(C$))),XOR,7,BF
  102. 1020 B$=INKEY$:GOSUB *KMODE
  103. 1030 IF ER THEN M2(ER)=M2(ER)-1:IF M2(ER)=0 THEN LINE(X(M(ER)),Y(M(ER)))-STEP(X2(M(ER)),Y2(M(ER))),XOR,%10,BF:ER=ER-1
  104. 1040 IF B$="" THEN IF T&<253*SP THEN T&=T&+1:GOTO 1020 ELSE 1020
  105. 1050 B=ASC(B$):IF B$<>LEFT$(A$,1) THEN LINE(POS(0)*8,CSRLIN*19)-STEP(7,16),PSET,%1,BF:LINE(X(B),Y(B))-STEP(X2(B),Y2(B)),XOR,%10,BF:ER=ER+1:M(ER)=B:M2(ER)=100:IF T&<253*SP THEN T&=T&+1:GOTO 1020 ELSE 1020
  106. 1060 T&=255-T&/SP
  107. 1070 X=POS(0):Y=CSRLIN:PRINT " ";:SYMBOL(X*8,Y*19),B$,1,1,%T&
  108. 1080 T&=0:IF B$=CHR$(13) THEN PRINT
  109. 1090 LINE(X(ASC(C$)),Y(ASC(C$)))-STEP(X2(ASC(C$)),Y2(ASC(C$))),XOR,7,BF
  110. 1100 IF A$=CHR$(13) THEN 850
  111. 1110 IF LEN(A$)=1 THEN A$=CHR$(13) ELSE A$=MID$(A$,2)
  112. 1120 GOTO 870
  113. 1130 *MODE GET@(568,464)-(639,479),TY
  114. 1140 ZSO2=ZSO:ZSO=-(TY(0)<>0)
  115. 1150 ZNK2=ZNK:ZNK=-(TY(1)<>0)
  116. 1160 RMA2=RMA:RMA=-(TY(6)>30000)
  117. 1170 KMD2=KMD
  118. 1180 KMD=-(TY(26)=1)-(TY(26)=30785)*2-(TY(26)=16400)*3
  119. 1190 KAM2=KAM:KAM=ZSO*16+ZNK*8+RMA*4+KMD
  120. 1200 X=POS(0):Y=CSRLIN
  121. 1210 LOCATE 70,23:PRINT MD$(ZSO)+MD$(ZNK+2)+MD$(RMA+4)+MD$(KMD+6);
  122. 1220 LOCATE X,Y:RETURN
  123. 1230 *KMODE GOSUB *MODE
  124. 1240 IF ((KAM AND MD) AND  3)=(MD2 AND  3) THEN 1300
  125. 1250 IF (MD2 AND 3)=2 THEN Z=3:GOTO 1290
  126. 1260 IF (MD2 AND 3)=3 THEN Z=2:GOTO 1290
  127. 1270 IF ((KAM AND MD) AND  2)=(MD2 AND  2) THEN Z=1:GOTO 1290
  128. 1280 IF (KAM AND 3)=3 THEN Z=2 ELSE Z=3
  129. 1290 GOSUB *Z:GOTO *KMODE
  130. 1300 IF ((KAM AND MD) AND  4)<>(MD2 AND  4) THEN ZZ=1:Z=2:GOTO 1290
  131. 1310 IF ((KAM AND MD) AND  8)<>(MD2 AND  8) THEN Z=4:GOTO 1290
  132. 1320 IF ((KAM AND MD) AND 16)<>(MD2 AND 16) THEN Z=5:GOTO 1290
  133. 1330 RETURN
  134. 1340 *Z LINE(X(256+Z),Y(256+Z))-STEP(X2(256+Z),Y2(256+Z)),XOR,7,BF
  135. 1350 IF ZZ THEN LINE(X(262),Y(262))-STEP(X2(262),Y2(262)),XOR,7,BF
  136. 1360 D$=INKEY$:GOSUB *MODE:IF KAM=KAM2 THEN 1360
  137. 1370 LINE(X(256+Z),Y(256+Z))-STEP(X2(256+Z),Y2(256+Z)),XOR,7,BF
  138. 1380 IF ZZ THEN ZZ=0:LINE(X(262),Y(262))-STEP(X2(262),Y2(262)),XOR,7,BF
  139. 1390 RETURN
  140. 1400 '******  データだよ  ******   半角英字・カナ文字のみ対応
  141. 1410 DATA "ASDF JKL;","ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  142. 1420 DATA "アイウエオ カキクケコ サシスセソ タチツテト ナニヌネノ ハヒフヘホ マミムメモ ヤユヨ ラリルレロ ワン"
  143. 1430 DATA "コノプログラムハ Basicデ ツクラレテイマス"
  144. 1434 DATA "ハンカクアルファベット カタカナニ タイオウシテイマス"
  145. 1440 DATA ""
  146.